//package com.dsfa.filter;
//
//import com.alibaba.fastjson.JSONObject;
//import com.dsfa.platform.starter.redis.RedisExecute;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.commons.codec.digest.DigestUtils;
//import org.apache.commons.lang3.StringUtils;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Component;
//
//
///**
// * @Description: TODO 后期可以把注解注入资源优化进来
// * @ClassName: wsHandle
// * @Author: wangdm
// * @Date: 2024/1/12
// */
//@Slf4j
//@Component
//public class Verify {
//    @Autowired
//    private RedisExecute redisExecute;
//
//    /*public Verify() {
//        this.redisExecute = new RedisExecute();
//    }*/
//
////    @Autowired
////    public void setRedisExecute(RedisExecute redisExecute) {
////        this.redisExecute = redisExecute;
////    }
//
//    /**
//     * @Description: 校验认证
//     * @Author: wangdm
//     * @Date: 2024/1/12
//     */
//    public String verifyAuth(String timestamp, String token, String app, String vcode, String appKey) {
//        String preStr = "[Verify] [verifyAuth] ";
//        log.info("{}timestamp={},token={},app={},vcode={}",
//                preStr, timestamp, token, app, vcode);
//        if (StringUtils.isEmpty(timestamp)) {
//            return "timestamp is null";
//        }
//
//        //验证规则
//        //1、timestamp在300*10000 五分钟之内
//        /*
//        // 创建 Calendar 对象并设置时区为东八区
//        Calendar calendar = Calendar.getInstance();
//        TimeZone timeZone = TimeZone.getTimeZone("GMT+8");
//        calendar.setTimeZone(timeZone);
//
//        // 获取当前时间
//        Date currentDate = new Date();
//        calendar.setTime(currentDate);
//
//        // 获取东八区的时间戳
//        long timestamp = calendar.getTimeInMillis() / 1000L * 1000L;
//
//        System.out.println("东八区时间戳：" + timestamp);
//        */
//        //与服务器时区不同，先不管时间
//        /*long time = System.currentTimeMillis();
//        long sjc = time - Long.parseLong(timestamp);
//        if (sjc < 300 * 10000 && sjc > 0) {
//            log.info("{}token timeout", preStr);
//            return "token timeout";
//        }*/
//        //2、在业务库中根据app（appcode）获取appkey
//        //appKey=busServer.getAppKeyByCode(app);
//        if ("".equals(appKey)) {
//            log.info("{}app不存在", preStr);
//            return "app不存在";
//        }
//        //3、redis 判断token是否已使用
//        //token在24小时内只能使用一次
//        if (redisExecute.hasKey("24-" + token)) {
//            log.info("{}token失效：{}", preStr, token);
//            return "token失效";
//        }
//        redisExecute.set("24-" + token, 1, 24 * 3600);
//        //3、判断vcode==md5(timestamp+appcode+token+appkey)
//        //TODO token 记入redis，同一个token值不能在24小时内重复使用
//        String d5 = DigestUtils.md5Hex(timestamp + app + token + appKey);
//        if (StringUtils.isEmpty(vcode) || !vcode.equals(d5)) {
//            log.info("{}token doesn't exist verify failed", preStr);
//            return "token doesn't exist verify failed";
//        }
//        log.info("{}OK timestamp={},token={},app={},vcode={}",
//                preStr, timestamp, token, app, vcode);
//        return "ok";
//    }
//
//
//    /**
//     * @Description: 转换成json 必须这样传参 “name”，“value”
//     * @ClassName: IntfsServiceWSImplPortImpl
//     * @Author: wangdm
//     * @Date: 2024/1/16
//     */
//    public static JSONObject toJson(Object... str) {
//        JSONObject js = new JSONObject();
//        for (int i = 0; i < str.length; i++) {
//            js.put(str[i].toString(), str[i + 1]);
//            i++;
//        }
//        return js;
//    }
//
//}
